interface IJump {
  jump(height: number): void
}

abstract class Animal implements IJump {
  jump(height: number): void {
    console.log(`可以跳 ${height}m`);
  }

  eat(food: string) {
    console.log(`大口的吃 ${food}`);
  }

  abstract run(distance: number): void
}

// 抽象类可以被继承
abstract class ChinaAnimal extends Animal {
  abstract bar(): void
}

class Dog extends ChinaAnimal {
  bar(): void {
    console.log('看门');
  }

  run(distance: number): void {
    console.log(`跑了 ${distance}km`);
  }
}

let dog = new Dog();
dog.eat("bread");
dog.run(250);
dog.bar();
dog.jump(10);

// 通过模块作用域做一个隔离哦，防止上面的变量名重复
export { };